package com.ncr.travel.appmgr.client.model;

import com.google.web.bindery.autobean.shared.AutoBean;
import com.google.web.bindery.autobean.shared.AutoBeanFactory;
import com.google.web.bindery.autobean.shared.AutoBeanFactory.Category;
import com.ncr.travel.appmgr.model.shared.AuditField;
import com.ncr.travel.appmgr.model.shared.AvailableGraphics;
import com.ncr.travel.appmgr.model.shared.ColumnSpecification;
import com.ncr.travel.appmgr.model.shared.ErrorText;
import com.ncr.travel.appmgr.model.shared.FontOptions;
import com.ncr.travel.appmgr.model.shared.Function;
import com.ncr.travel.appmgr.model.shared.RowSpecification;
import com.ncr.travel.appmgr.model.shared.Rule;
import com.ncr.travel.appmgr.model.shared.ScreenConfiguration;
import com.ncr.travel.appmgr.model.shared.TextEntries;
import com.ncr.travel.appmgr.model.shared.StationsAuditCriteria;
import com.ncr.travel.appmgr.model.shared.TableDefinition;
import com.ncr.travel.appmgr.model.shared.Text;
import com.ncr.travel.appmgr.model.shared.TextEntry;
import com.ncr.travel.appmgr.model.shared.ErrorTexts;

/**
 * {@link AutoBeanFactory} for getting instances of screen config
 * model objects.
 */
@Category({TextCategory.class, TextEntryCategory.class, ErrorTextCategory.class})
public interface ScreenConfigurationFactory extends AutoBeanFactory {

	/**
	 * Gets an instance of {@link ScreenConfiguration}.
	 *
	 * @return The object instance.
	 */
	AutoBean<ScreenConfiguration> screenConfiguration();
	
	AutoBean<TextEntries> TextEntries();
	
	AutoBean<ErrorTexts> ErrorTexts();

	AutoBean<AuditField> auditField();

	AutoBean<AvailableGraphics> availableGraphics();

	AutoBean<ColumnSpecification> columnSpecification();

//	AutoBean<ErrorText> errorText();

	AutoBean<FontOptions> fontOptions();

	AutoBean<RowSpecification> rowSpecification();

	AutoBean<Rule> rule();

	AutoBean<StationsAuditCriteria> stationsAuditCriteria();

	AutoBean<TableDefinition> tableDefinition();

//	AutoBean<TextEntry> textEntry();

	AutoBean<Function> function();

	AutoBean<TextEntry> textEntry();

	AutoBean<ErrorText> errorText();
	
	AutoBean<Text> text(Text source);
}
